<?php

namespace Gds\VenteBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Gds\VenteBundle\Entity\Client
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="Gds\VenteBundle\Entity\ClientRepository")
 */
class Client {

    /**
     * @ORM\OneToMany(targetEntity="Gds\VenteBundle\Entity\FactureAvoirClient", mappedBy="client", cascade={"remove", "persist"})
     */
    private $facture_avoirs; // Ici commentaires prend un "s", car un article a plusieurs commentaires !
    /**
     * @ORM\OneToMany(targetEntity="Gds\VenteBundle\Entity\BonLivraisonRetourClient", mappedBy="client", cascade={"remove", "persist"})
     */
    private $bon_livraison_retours; // Ici commentaires prend un "s", car un article a plusieurs commentaires !
    /**
     * @ORM\OneToMany(targetEntity="Gds\VenteBundle\Entity\ReglementClient", mappedBy="client", cascade={"remove", "persist"})
     */
    private $reglements; // Ici commentaires prend un "s", car un article a plusieurs commentaires !
    /**
     * @ORM\OneToMany(targetEntity="Gds\VenteBundle\Entity\BonLivraisonClient", mappedBy="client", cascade={"remove", "persist"})
     */
    private $bon_livraisons; // Ici commentaires prend un "s", car un article a plusieurs commentaires !
    /**
     * @ORM\OneToMany(targetEntity="Gds\VenteBundle\Entity\HistoryBonLivraisonClient", mappedBy="client", cascade={"remove", "persist"})
     */
    private $history_bon_livraisons; // Ici commentaires prend un "s", car un article a plusieurs commentaires !
    /**
     * @ORM\OneToMany(targetEntity="Gds\AchatBundle\Entity\CompteBancaire", mappedBy="client", cascade={"remove", "persist"})
     */
    private $comptes; // Ici commentaires prend un "s", car un article a plusieurs commentaires !
    /**
     * @ORM\OneToMany(targetEntity="Gds\VenteBundle\Entity\Devis", mappedBy="client", cascade={"remove", "persist"})
     */
    private $devis; // Ici commentaires prend un "s", car un article a plusieurs commentaires !

    /**
     * @ORM\OneToMany(targetEntity="Gds\VenteBundle\Entity\BonCommandeClient", mappedBy="client", cascade={"remove", "persist"})
     */
    private $bon_commandes; // Ici commentaires prend un "s", car un article a plusieurs commentaires !
    /**
     * @ORM\OneToMany(targetEntity="Gds\VenteBundle\Entity\TicketCaisse", mappedBy="client", cascade={"remove", "persist"})
     */
    private $tickets; // Ici commentaires prend un "s", car un article a plusieurs commentaires !

    /**
     * @ORM\OneToMany(targetEntity="Gds\VenteBundle\Entity\CategorieRemise", mappedBy="client", cascade={"remove", "persist"})
     */
    private $categorieRemises; // Ici commentaires prend un "s", car un article a plusieurs commentaires !
    /**
     * @ORM\ManyToMany(targetEntity="Gds\ArticleBundle\Entity\Departement", mappedBy="clients")
     */
    private $departements;

    /**
     * @ORM\OneToMany(targetEntity="Gds\VenteBundle\Entity\Acompte", mappedBy="client")
     */
    private $acomptes;

    /**
     * @var integer $id
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string $raison_social
     *
     * @ORM\Column(name="raison_social", type="string", length=255)
     */
    private $raison_social;

    /**
     * @var string $nom
     *
     * @ORM\Column(name="nom", type="string", length=255,nullable=true)
     */
    private $nom;

    /**
     * @var string $prenom
     *
     * @ORM\Column(name="prenom", type="string", length=255,nullable=true)
     */
    private $prenom;

    /**
     * @var boolean $is_active
     *
     * @ORM\Column(name="is_active", type="boolean")
     */
    private $is_active;

    /**
     * @var string $tel
     *
     * @ORM\Column(name="tel", type="string", length=255,nullable=true)
     */
    private $tel;

    /**
     * @var string $gsm
     *
     * @ORM\Column(name="gsm", type="string", length=255,nullable=true)
     */
    private $gsm;

    /**
     * @var string $fax
     *
     * @ORM\Column(name="fax", type="string", length=255,nullable=true)
     */
    private $fax;

    /**
     * @var string $adresse
     *
     * @ORM\Column(name="adresse", type="string", length=255,nullable=true)
     */
    private $adresse;

    /**
     * @var string $matricule_fiscale
     *
     * @ORM\Column(name="matricule_fiscale", type="string", length=255,nullable=true)
     */
    private $matricule_fiscale;

    /**
     * @var string $code
     *
     * @ORM\Column(name="code", type="string", length=255,nullable=true)
     */
    private $code;
    /**
     * @var string $code_barre
     *
     * @ORM\Column(name="code_barre", type="string", length=255,nullable=true)
     */
    private $code_barre;

    /**
     * @var string $numero_exonoration
     *
     * @ORM\Column(name="numero_exonoration", type="string", length=255,nullable=true)
     */
    private $numero_exonoration;

    /**
     * @var float $solde
     *
     * @ORM\Column(name="solde", type="decimal", scale=3)
     */
    private $solde;

    /**
     * @var float $limite_credit
     *
     * @ORM\Column(name="limite_credit", type="decimal", scale=3)
     */
    private $limite_credit;

    /**
     * Constructor
     */
    public function __construct() {
        $this->facture_avoirs = new \Doctrine\Common\Collections\ArrayCollection();
        $this->bon_livraison_retours = new \Doctrine\Common\Collections\ArrayCollection();
        $this->reglements = new \Doctrine\Common\Collections\ArrayCollection();
        $this->bon_livraisons = new \Doctrine\Common\Collections\ArrayCollection();
        $this->comptes = new \Doctrine\Common\Collections\ArrayCollection();
        $this->devis = new \Doctrine\Common\Collections\ArrayCollection();
        $this->tickets = new \Doctrine\Common\Collections\ArrayCollection();
        $this->categorieRemises = new \Doctrine\Common\Collections\ArrayCollection();
        $this->departements = new \Doctrine\Common\Collections\ArrayCollection();
        $this->is_active = true;
    }

    public function __toString() {
        return $this->raison_social;
    }

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId() {
        return $this->id;
    }

    /**
     * Set raison_social
     *
     * @param string $raisonSocial
     * @return Client
     */
    public function setRaisonSocial($raisonSocial) {
        $this->raison_social = $raisonSocial;

        return $this;
    }

    /**
     * Get raison_social
     *
     * @return string 
     */
    public function getRaisonSocial() {
        return $this->raison_social;
    }

    /**
     * Set nom
     *
     * @param string $nom
     * @return Client
     */
    public function setNom($nom) {
        $this->nom = $nom;

        return $this;
    }

    /**
     * Get nom
     *
     * @return string 
     */
    public function getNom() {
        return $this->nom;
    }

    /**
     * Set prenom
     *
     * @param string $prenom
     * @return Client
     */
    public function setPrenom($prenom) {
        $this->prenom = $prenom;

        return $this;
    }

    /**
     * Get prenom
     *
     * @return string 
     */
    public function getPrenom() {
        return $this->prenom;
    }

    /**
     * Set is_active
     *
     * @param boolean $isActive
     * @return Client
     */
    public function setIsActive($isActive) {
        $this->is_active = $isActive;

        return $this;
    }

    /**
     * Get is_active
     *
     * @return boolean 
     */
    public function getIsActive() {
        return $this->is_active;
    }

    /**
     * Set tel
     *
     * @param string $tel
     * @return Client
     */
    public function setTel($tel) {
        $this->tel = $tel;

        return $this;
    }

    /**
     * Get tel
     *
     * @return string 
     */
    public function getTel() {
        return $this->tel;
    }

    /**
     * Set gsm
     *
     * @param string $gsm
     * @return Client
     */
    public function setGsm($gsm) {
        $this->gsm = $gsm;

        return $this;
    }

    /**
     * Get gsm
     *
     * @return string 
     */
    public function getGsm() {
        return $this->gsm;
    }

    /**
     * Set fax
     *
     * @param string $fax
     * @return Client
     */
    public function setFax($fax) {
        $this->fax = $fax;

        return $this;
    }

    /**
     * Get fax
     *
     * @return string 
     */
    public function getFax() {
        return $this->fax;
    }

    /**
     * Set adresse
     *
     * @param string $adresse
     * @return Client
     */
    public function setAdresse($adresse) {
        $this->adresse = $adresse;

        return $this;
    }

    /**
     * Get adresse
     *
     * @return string 
     */
    public function getAdresse() {
        return $this->adresse;
    }

    /**
     * Set matricule_fiscale
     *
     * @param string $matriculeFiscale
     * @return Client
     */
    public function setMatriculeFiscale($matriculeFiscale) {
        $this->matricule_fiscale = $matriculeFiscale;

        return $this;
    }

    /**
     * Get matricule_fiscale
     *
     * @return string 
     */
    public function getMatriculeFiscale() {
        return $this->matricule_fiscale;
    }

    /**
     * Set code
     *
     * @param string $code
     * @return Client
     */
    public function setCode($code) {
        $this->code = $code;

        return $this;
    }

    /**
     * Get code
     *
     * @return string 
     */
    public function getCode() {
        return $this->code;
    }

    /**
     * Set numero_exonoration
     *
     * @param string $numeroExonoration
     * @return Client
     */
    public function setNumeroExonoration($numeroExonoration) {
        $this->numero_exonoration = $numeroExonoration;

        return $this;
    }

    /**
     * Get numero_exonoration
     *
     * @return string 
     */
    public function getNumeroExonoration() {
        return $this->numero_exonoration;
    }

    /**
     * Set solde
     *
     * @param float $solde
     * @return Client
     */
    public function setSolde($solde) {
        $this->solde = $solde;

        return $this;
    }

    /**
     * Get solde
     *
     * @return float 
     */
    public function getSolde() {
        return $this->solde;
    }

    /**
     * Set limite_credit
     *
     * @param float $limiteCredit
     * @return Client
     */
    public function setLimiteCredit($limiteCredit) {
        $this->limite_credit = $limiteCredit;

        return $this;
    }

    /**
     * Get limite_credit
     *
     * @return float 
     */
    public function getLimiteCredit() {
        return $this->limite_credit;
    }

    /**
     * Add facture_avoirs
     *
     * @param \Gds\VenteBundle\Entity\FactureAvoirClient $factureAvoirs
     * @return Client
     */
    public function addFactureAvoir(\Gds\VenteBundle\Entity\FactureAvoirClient $factureAvoirs) {
        $this->facture_avoirs[] = $factureAvoirs;

        return $this;
    }

    /**
     * Remove facture_avoirs
     *
     * @param \Gds\VenteBundle\Entity\FactureAvoirClient $factureAvoirs
     */
    public function removeFactureAvoir(\Gds\VenteBundle\Entity\FactureAvoirClient $factureAvoirs) {
        $this->facture_avoirs->removeElement($factureAvoirs);
    }

    /**
     * Get facture_avoirs
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getFactureAvoirs() {
        return $this->facture_avoirs;
    }

    /**
     * Add bon_livraison_retours
     *
     * @param \Gds\VenteBundle\Entity\BonLivraisonRetourClient $bonLivraisonRetours
     * @return Client
     */
    public function addBonLivraisonRetour(\Gds\VenteBundle\Entity\BonLivraisonRetourClient $bonLivraisonRetours) {
        $this->bon_livraison_retours[] = $bonLivraisonRetours;

        return $this;
    }

    /**
     * Remove bon_livraison_retours
     *
     * @param \Gds\VenteBundle\Entity\BonLivraisonRetourClient $bonLivraisonRetours
     */
    public function removeBonLivraisonRetour(\Gds\VenteBundle\Entity\BonLivraisonRetourClient $bonLivraisonRetours) {
        $this->bon_livraison_retours->removeElement($bonLivraisonRetours);
    }

    /**
     * Get bon_livraison_retours
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getBonLivraisonRetours() {
        return $this->bon_livraison_retours;
    }

    /**
     * Add reglements
     *
     * @param \Gds\VenteBundle\Entity\ReglementClient $reglements
     * @return Client
     */
    public function addReglement(\Gds\VenteBundle\Entity\ReglementClient $reglements) {
        $this->reglements[] = $reglements;

        return $this;
    }

    /**
     * Remove reglements
     *
     * @param \Gds\VenteBundle\Entity\ReglementClient $reglements
     */
    public function removeReglement(\Gds\VenteBundle\Entity\ReglementClient $reglements) {
        $this->reglements->removeElement($reglements);
    }

    /**
     * Get reglements
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getReglements() {
        return $this->reglements;
    }

    /**
     * Add bon_livraisons
     *
     * @param \Gds\VenteBundle\Entity\BonLivraisonClient $bonLivraisons
     * @return Client
     */
    public function addBonLivraison(\Gds\VenteBundle\Entity\BonLivraisonClient $bonLivraisons) {
        $this->bon_livraisons[] = $bonLivraisons;

        return $this;
    }

    /**
     * Remove bon_livraisons
     *
     * @param \Gds\VenteBundle\Entity\BonLivraisonClient $bonLivraisons
     */
    public function removeBonLivraison(\Gds\VenteBundle\Entity\BonLivraisonClient $bonLivraisons) {
        $this->bon_livraisons->removeElement($bonLivraisons);
    }

    /**
     * Get bon_livraisons
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getBonLivraisons() {
        return $this->bon_livraisons;
    }

    /**
     * Add comptes
     *
     * @param \Gds\AchatBundle\Entity\CompteBancaire $comptes
     * @return Client
     */
    public function addCompte(\Gds\AchatBundle\Entity\CompteBancaire $comptes) {
        $this->comptes[] = $comptes;

        return $this;
    }

    /**
     * Remove comptes
     *
     * @param \Gds\AchatBundle\Entity\CompteBancaire $comptes
     */
    public function removeCompte(\Gds\AchatBundle\Entity\CompteBancaire $comptes) {
        $this->comptes->removeElement($comptes);
    }

    /**
     * Get comptes
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getComptes() {
        return $this->comptes;
    }

    /**
     * Add devis
     *
     * @param \Gds\VenteBundle\Entity\Devis $devis
     * @return Client
     */
    public function addDevi(\Gds\VenteBundle\Entity\Devis $devis) {
        $this->devis[] = $devis;

        return $this;
    }

    /**
     * Remove devis
     *
     * @param \Gds\VenteBundle\Entity\Devis $devis
     */
    public function removeDevi(\Gds\VenteBundle\Entity\Devis $devis) {
        $this->devis->removeElement($devis);
    }

    /**
     * Get devis
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getDevis() {
        return $this->devis;
    }

    /**
     * Add tickets
     *
     * @param \Gds\VenteBundle\Entity\TicketCaisse $tickets
     * @return Client
     */
    public function addTicket(\Gds\VenteBundle\Entity\TicketCaisse $tickets) {
        $this->tickets[] = $tickets;

        return $this;
    }

    /**
     * Remove tickets
     *
     * @param \Gds\VenteBundle\Entity\TicketCaisse $tickets
     */
    public function removeTicket(\Gds\VenteBundle\Entity\TicketCaisse $tickets) {
        $this->tickets->removeElement($tickets);
    }

    /**
     * Get tickets
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getTickets() {
        return $this->tickets;
    }

    /**
     * Add categorieRemises
     *
     * @param \Gds\VenteBundle\Entity\CategorieRemise $categorieRemises
     * @return Client
     */
    public function addCategorieRemise(\Gds\VenteBundle\Entity\CategorieRemise $categorieRemises) {
        $this->categorieRemises[] = $categorieRemises;

        return $this;
    }

    /**
     * Remove categorieRemises
     *
     * @param \Gds\VenteBundle\Entity\CategorieRemise $categorieRemises
     */
    public function removeCategorieRemise(\Gds\VenteBundle\Entity\CategorieRemise $categorieRemises) {
        $this->categorieRemises->removeElement($categorieRemises);
    }

    /**
     * Get categorieRemises
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getCategorieRemises() {
        return $this->categorieRemises;
    }

    /**
     * Add departements
     *
     * @param \Gds\ArticleBundle\Entity\Departement $departements
     * @return Client
     */
    public function addDepartement(\Gds\ArticleBundle\Entity\Departement $departements) {
        $this->departements[] = $departements;

        return $this;
    }

    /**
     * Remove departements
     *
     * @param \Gds\ArticleBundle\Entity\Departement $departements
     */
    public function removeDepartement(\Gds\ArticleBundle\Entity\Departement $departements) {
        $this->departements->removeElement($departements);
    }

    /**
     * Get departements
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getDepartements() {
        return $this->departements;
    }

    /**
     * Set code_barre
     *
     * @param string $codeBarre
     * @return Client
     */
    public function setCodeBarre($codeBarre) {
        $this->code_barre = $codeBarre;

        return $this;
    }

    /**
     * Get code_barre
     *
     * @return string 
     */
    public function getCodeBarre() {
        return $this->code_barre;
    }

    /**
     * Add bon_commandes
     *
     * @param \Gds\VenteBundle\Entity\BonCommandeClient $bonCommandes
     * @return Client
     */
    public function addBonCommande(\Gds\VenteBundle\Entity\BonCommandeClient $bonCommandes) {
        $this->bon_commandes[] = $bonCommandes;

        return $this;
    }

    /**
     * Remove bon_commandes
     *
     * @param \Gds\VenteBundle\Entity\BonCommandeClient $bonCommandes
     */
    public function removeBonCommande(\Gds\VenteBundle\Entity\BonCommandeClient $bonCommandes) {
        $this->bon_commandes->removeElement($bonCommandes);
    }

    /**
     * Get bon_commandes
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getBonCommandes() {
        return $this->bon_commandes;
    }

    /**
     * Add history_bon_livraisons
     *
     * @param \Gds\VenteBundle\Entity\HistoryBonLivraisonClient $historyBonLivraisons
     * @return Client
     */
    public function addHistoryBonLivraison(\Gds\VenteBundle\Entity\HistoryBonLivraisonClient $historyBonLivraisons) {
        $this->history_bon_livraisons[] = $historyBonLivraisons;

        return $this;
    }

    /**
     * Remove history_bon_livraisons
     *
     * @param \Gds\VenteBundle\Entity\HistoryBonLivraisonClient $historyBonLivraisons
     */
    public function removeHistoryBonLivraison(\Gds\VenteBundle\Entity\HistoryBonLivraisonClient $historyBonLivraisons) {
        $this->history_bon_livraisons->removeElement($historyBonLivraisons);
    }

    /**
     * Get history_bon_livraisons
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getHistoryBonLivraisons() {
        return $this->history_bon_livraisons;
    }


    /**
     * Add acomptes
     *
     * @param \Gds\VenteBundle\Entity\Acompte $acomptes
     * @return Client
     */
    public function addAcompte(\Gds\VenteBundle\Entity\Acompte $acomptes)
    {
        $this->acomptes[] = $acomptes;

        return $this;
    }

    /**
     * Remove acomptes
     *
     * @param \Gds\VenteBundle\Entity\Acompte $acomptes
     */
    public function removeAcompte(\Gds\VenteBundle\Entity\Acompte $acomptes)
    {
        $this->acomptes->removeElement($acomptes);
    }

    /**
     * Get acomptes
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getAcomptes()
    {
        return $this->acomptes;
    }
}
